package cn.wl.pchart.dao;

import cn.wl.pchart.entity.Infos;
import cn.wl.pchart.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

// 用户数据库处理接口
public interface UserMapper {

    /**
     * 根据主键id查询数据库中是否有这个用户
     * @param id
     * @return
     */
    public Integer verifyExist(@Param("id")String id);

    /**
     * 根据主键id查询密码信息
     * @param id
     * @return
     */
    public User getUserById(String id);

    /**
     * 执行注册
     * @param id
     * @param password
     */
    public void register(@Param("id")String id,
                         @Param("password")String password);

    /**
     * 执行登陆
     * @param id
     * @return 用户
     */
    public User login(@Param("id")String id);

    /**
     * 喜欢/关注某个用户
     * @param id
     * @param like
     */
    public void doLike(@Param("id")String id, @Param("like")String like);

    /**
     * 判断是否已经关注
     * @param id
     * @param like
     * @return
     */
    public Integer isLike(@Param("id")String id, @Param("like")String like);

    /**
     * 获取关注列表
     * @param id
     * @return
     */
    public List<String> getLikeList(@Param("id")String id);

    /**
     * 获取粉丝列表
     * @param id
     * @return
     */
    public List<String> getIsLikedList(@Param("id")String id);

    /**
     * 获取对应id用户的昵称
     * @param id
     * @return
     */
    public String getName(@Param("id")String id);

    /**
     * 获取用户的头像url
     * @param id
     * @return
     */
    public String getImage(@Param("id")String id);

    /**
     * 取消关注
     * @param id
     * @param like
     */
    public void cancelLike(@Param("id")String id, @Param("like")String like);

    /**
     * 获取用户的全部信息
     * @param id
     */
    public Infos getUserInfos(@Param("id")String id);

    /**
     * 设置用户信息
     * @param id
     * @param name
     * @param sex
     * @param age
     * @param constellation
     * @param address
     * @param image
     */
    public void setUserInfos(@Param("id")String id,
                             @Param("name")String name,
                             @Param("sex")String sex,
                             @Param("age")String age,
                             @Param("constellation")String constellation,
                             @Param("address")String address,
                             @Param("image")String image);

}
